# 云胡的编程周报第 003 期
时间:2023/8/28 - 2023/9/3
# 一、点滴记录
使用
BeanUtils.copyProperties(Object source, Object target)
拷贝时,要先判断source
不为空。使用
lint-md
对某个文件夹底下的所有md
文件进行内容格式化lint-md essay/**/* --fix
1为数据库中的表添加唯一索引
alter table user add unique index(username, sex); # 对用户表的用户名和性别做唯一索引
1唯一索引和
Mybatis Plus
的逻辑删除会冲突,我这边的解决方式是直接删了逻辑删除,简单暴力。Vue
使用路由懒加载会更高效{ name: 'UtilIndex', path: '/utilIndex', component: ()=>import("@/components/UtilIndex") }
1
2
3
4
5使用
LambdaUpdateWrapper
来更新记录,避免硬编码。LambdaUpdateWrapper<SysUserEntity> lambdaUpdateWrapper = new LambdaUpdateWrapper<>(); lambdaUpdateWrapper .eq(SysUserEntity::getPhone, phone) .set(SysUserEntity::getToken, token); return sysUserMapper.update(null, lambdaUpdateWrapper);
1
2
3
4
5jwt
生成的token
是一次性的,在jwt
里面设置了过期时间,这个时间就固定写死了,过期时间是无法延后的,因此无法实现token
的自动续期,要想自动续期只能重新生成一个新的token
,不推荐。redis
数据的key
我用了用户名,value
是用户信息,用户信息中带有token
。使用
redis
的过期时间来实现token
的续期,如果用户某个请求距离redis
这条数据的过期时间小于 1 小时,那么重新设置延后这条redis
的过期时间,从而达到token
的自动续期。这里的 1 小时只是个例子,可以自己定义。判断
redis
剩余生存时间前一定要先判断这个key
是否存在。serializableRedisTemplate.hasKey(key)
判断键是否存在。@Autowired private RedisTemplate<String, Serializable> serializableRedisTemplate; public boolean enlargeTokenTime(String key, long expireTime) { if (StrUtil.isNotBlank(key) && Boolean.TRUE.equals(serializableRedisTemplate.hasKey(key))) { Long currentExpireTime = serializableRedisTemplate.getExpire(key, TimeUnit.HOURS); if (Objects.nonNull(currentExpireTime) && (currentExpireTime <= 1)) { // 重新设置 key 的过期时间 serializableRedisTemplate.expire(key, expireTime, TimeUnit.HOURS); return true; } } return false; }
1
2
3
4
5
6
7
8
9
10
11
12
13
14查看
nginx
监听了哪几个端口lsof -i:80 # nginx 在 80 端口,先查看它的进程 PID # netstat 命令查看本机的网络连接和后门 # a 表示列出所有状态,n 表示使用 IP 和端口号,p 表示列出 PID 和程序的文件名 # grep 可以根据输入文本匹配,支持简单的模式和正则 netstat -anp | grep pid
1
2
3
4
5root@VM-12-16-debian:~# lsof -i:80 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME nginx 3004144 root 10u IPv4 781968082 0t0 TCP *:http (LISTEN) nginx 3004144 root 11u IPv6 781968083 0t0 TCP *:http (LISTEN) nginx 3004145 root 10u IPv4 781968082 0t0 TCP *:http (LISTEN) nginx 3004145 root 11u IPv6 781968083 0t0 TCP *:http (LISTEN) nginx 3004146 root 10u IPv4 781968082 0t0 TCP *:http (LISTEN) nginx 3004146 root 11u IPv6 781968083 0t0 TCP *:http (LISTEN) root@VM-12-16-debian:~# netstat -anp | grep 3004144 tcp 0 0 0.0.0.0:9000 0.0.0.0:* LISTEN 3004144/nginx: mast tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 3004144/nginx: mast tcp 0 0 0.0.0.0:9049 0.0.0.0:* LISTEN 3004144/nginx: mast tcp 0 0 0.0.0.0:9050 0.0.0.0:* LISTEN 3004144/nginx: mast tcp 0 0 0.0.0.0:8765 0.0.0.0:* LISTEN 3004144/nginx: mast tcp6 0 0 :::80 :::* LISTEN 3004144/nginx: mast
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
可以看到我这边监听了 9000
、9049
、9050
、8765
等端口。
# 二、新发现
自动生成
vuepress
侧边栏。https://shanyuhai123.github.io/vuepress-plugin-auto-sidebar/zh/ (opens new window)
一个正则表达式测试网站,可以更改成中文界面。
字节跳动开源图标库
java
爬虫框架webmagic
shell
命令行的解释https://www.shell.how/ (opens new window)
哈哈哈哈,
git
是一个愚蠢的内容跟踪工具。